package org.fixies.testcase.annotation;

import org.fixies.spreadsheet.Sheet;
import org.fixies.spreadsheet.converter.SheetConverter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Excel小表からフィールドの値を取得する為のアノテーション<br/>
 *
 * @author Kawasaki
 * @version 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FromSheet {

    /**
     * シート名<br/>
     *
     * @return シート名
     */
    String id() default "";

    /**
     * 変換クラス<br/>
     * 指定しない場合は、登録済の変換クラスを使用する。
     *
     * @return 変換クラス
     */
    Class<? extends SheetConverter<?>> converter() default NullSheetConverter.class;


    public static class NullSheetConverter implements SheetConverter<Object> {

        @Override
        public Object convert() {
            return null;
        }

        @Override
        public void setSheet(Sheet sheet) {
        }
    }
}
